--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit 087261c8bb836dc5bb9b48ef25be7cc542fa6f4e
Parents : 7e904ed
Author : Jeremy O'Brien <neutral@fastmail.com>
Date : 2026-05-15T20:40:48-04:00
Committer : Mark Qvist <bc7291552be7a58f361522990465165c>
Date : 2026-05-17T02:56:05+02:00
channels: don't snap window to bottom of chat when a message arrives
Changes
Diff
diff --git a/nomadnet/ui/textui/Channels.py b/nomadnet/ui/textui/Channels.py
index a96bd0f..cd75aa9 100644
--- a/nomadnet/ui/textui/Channels.py
+++ b/nomadnet/ui/textui/Channels.py
@@ -492,17 +492,19 @@ class RoomWidget(urwid.WidgetWrap):
widget = _message_widget(self.app, self.hub, msg, link_delegate=self.link_delegate)
wrapped = urwid.AttrMap(widget, None)
body = self.messagelist._listbox.body
+ was_at_bottom = getattr(self, "_empty_placeholder", False) or getattr(self.messagelist, "bottom_is_visible", True)
if getattr(self, "_empty_placeholder", False):
del body[:]
self._empty_placeholder = False
body.append(wrapped)
while len(body) > self.MAX_RENDERED_MESSAGES:
del body[0]
- try:
- self.messagelist._listbox.set_focus(len(body)-1)
- self.messagelist._listbox.set_focus_valign("bottom")
- except Exception:
- pass
+ if was_at_bottom:
+ try:
+ self.messagelist._listbox.set_focus(len(body)-1)
+ self.messagelist._listbox.set_focus_valign("bottom")
+ except Exception:
+ pass
except Exception as e:
RNS.log("Incremental append failed, falling back: "+str(e), RNS.LOG_DEBUG)
self.update_messages(replace=True)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────